IICS CDI Mappingで文字桁数調整とLPAD関数を使ってみた
はじめに
データアナリティクス事業本部ビッグデータチームのyosh-kです。 IICS CDI Mappingで文字の桁数調整とLPAD関数を使用する機会があったのでまとめたいと思います。
※ IICS: Informatica Intelligent Cloud Services
※ CDI: Cloud Data Integration
※ Mapping: SourceからTargetへのデータの流れを定義するアセット。プログラミング言語の関数のようなもの。
文字の桁数調整
マッピングで文字の桁数を調整する方法は2通りあります。
- SourceとTargetの間に式を挿入し、式の中で新規フィールドを作成し「精度」に区切りたい桁数を入力し、Targetに出力する方法。
- Targetのターゲットフィールドで「精度」に区切りたい桁数を入力し、Targetに出力する方法。
最初の方法ですと、新たに別名でカラムを追加しないといけないので、手動でフィールドマッピングを変更する手間がかかり少々面倒です。 ですので今回は、2つ目のTargetのターゲットフィールドで「精度」に区切りたい桁数を入力し、Targetに出力する方法を試していきたいと思います。
事前準備
今回は以下の前提条件のもとに検証していきたいと思います。
- Source、Target共にS3を選択するので、S3 Bucketが作成済みであること。
- S3のBucketと接続が確立されているIICSコネクタがあること。
- 区切りたい文字数は「10」とする。
-
テスト用のCSV:character_precision_sample.csv
数字(半角),数字(全角) 1234567891,1234567891 12345678912,12345678912 12345678912345,12345678912345
上記CSVをSource先のS3に格納します。
マッピング作成
新規のマッピング作成画面を開き、Sourceに先ほど格納したcsvファイル、形式に「フラットファイル」を選択します。
ターゲットオブジェクトは新規作成で、任意の格納先とファイル名を入力します。
Targetのターゲットフィールドから「オプション」→「メタデータの編集」をクリックし、「ネイティブ精度」を区切りたい文字数に修正します。
保存してマッピングを実行します。
実行結果確認
実行前と比較して、半角、全角共に10桁以上は切り捨てられていることを確認できました!
LPAD関数
LPAD関数を使用すると、引数に指定した文字列が指定の長さになるように、指定した文字を左詰めした文字列を取得することができます。
参考:LPAD
逆に右詰めしたい場合は、RPAD関数がありますが、今回は紹介しませんので、参考URLをご参照ください。
参考:RPAD
構文: LPAD( first_string, length, second_string )
second_stringの文字のシーケンスをlengthまで左に埋め込んでfirst_stringを返します。second_stringを省略すると先頭を空白で埋めるようになります。 一例を表すと以下のようになります。
LPAD( 702, 6, '0') → 000702
事前準備
今回は以下の前提条件のもとに検証していきたいと思います。
- Source、Target共にS3を選択するので、S3 Bucketが作成済みであること。
- S3のBucketと接続が確立されているIICSコネクタがあること。
- LPADのlengthは6、second_stringは'0'とする。
-
テスト用のCSV:lpad_sample.csv
数字(半角),数字(全角) 123,123 1,1 123456,123456
上記CSVをSource先のS3に格納します。
マッピング作成
新規のマッピング作成画面を開き、Sourceに先ほど格納したcsvファイル、形式に「フラットファイル」を選択します。
デザインタブから「式」を選択し、SourceとTargetの間に埋め込みます。
式のプロパティから「式」を選択し、右のプラスボタンから新規フィールドを作成し、以下の値を入力します。
フィールドタイプ:出力フィールド 名前:new_数字_半角_ タイプ:string 精度:6
作成した式の「設定」をクリックし、組み込み関数から「Lpad」を選択します。
string1を選択し、フィールドから「数字_半角_」を選択し追加、nは6、string2は'0'を入力します。
検証ボタンを押下し、「式は有効です。」と表示されれば問題ありませんので、OKを押します。「数字_全角_」に関しても同様の手順で式の作成を行なってください。
今回、新たに作成したフィールド以外は出力したくないため、Targetの受信フィールドのフィールドルールで「new_」でないフィールドは除外してあります。
ターゲットオブジェクトは新規作成で、任意の格納先とファイル名を入力します。
保存してマッピングを実行します。
実行結果確認
実行前と比較して、6桁より少ない値は全て0で埋められていることを確認できました!
最後に
今回は初めてのIICS CDIの記事執筆だったので、細かく記載しましたが、今後は大雑把に使ってない機能等をどんどん試して執筆していきます!